/**
 * 购物车类
 * json数据格式示例:
 * [{
       "id": 1,(菜品id)
       "name": "dishes",(菜名)
       "img": "/img/sss.png",(图片)
       "price": 20,(价格)
       "num": 2 (数量)
   },
 { ...},
 { ...}
 ]

 调用方式：let buyCar = new myBuyCar();
          buyCar.getItemList(mId);
 */
function myBuyCar() {

    /**
     * 获取对应商家购物车所有商品
     * @param mId :商家Id
     * 若购物车无商品则返回null,有则返回json对象
     */
    this.getItemList = function (mId) {
        let items = localStorage.getItem(mId);
        if (items != null || items != "") {
            return JSON.parse(items);
        } else {
            return null;
        }
    };

    /**
     * 添加商品到购物车
     * @param mId :商家ID
     * @param data：商品信息json
     */
    this.addItem = function (mId, data) {
        let itemList = this.getItemList(mId);
        if (itemList == null) {
            localStorage.setItem(mId, data); // 第一次加入商品
        } else {
            let isHave = false; //给个标志判断是否已存在商品
            $.each(itemList, function (i, val) { //遍历查看购物车中是否有该商品信息
                if (val.id == data.id) { //找到该商品,则将数量加1
                    val.num += 1;  //json里要有num属性：用来标识数量
                    isHave = true;
                    return false;
                }
            });
            if (!isHave) {
                itemList.push(data);
            }
            localStorage.setItem(mId, JSON.stringify(itemList));
        }
    };

    /**
     * 删除某个商品
     * @param mId: 商家Id
     * @param itemId :商品id
     */
    this.deleteItem = function (mId, itemId) {
        let itemList = this.getItemList(mId);
        if (itemList != null) {
            let index = null;
            $.each(itemList, function (i, val) {
                if (itemId == val.id) {  //根据id找到对应商品，并删除
                    index = i; //获取数组元素下标
                    return false;
                }
            });
            if (index != null) {
                itemList.remove(index);
                localStorage.setItem(mId, JSON.stringify(itemList));
            }
        }
    };

    /**
     * 清空某个商家的购物车
     * @param mId
     */
    this.removeAll = function (mId) {
        localStorage.removeItem(mId);
    };

    /**
     * 更改指定商品数量
     * @param mId
     * @param itemId
     * @param num
     */
    this.updateNum = function (mId, itemId, num) {
        let itemList = this.getItemList(mId);
        if (itemList != null) {
            $.each(itemList, function (i, val) {
                if (val.id == itemId) {
                    val.num = num;
                    return false;
                }
            });
            localStorage.setItem(mId, JSON.stringify(itemList));
        }
    }

}


